<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // class B {
      //   constructor(d) {
      //     this.d = d;
      //   }
      // }
      // class A extends B {
      //   a = 1;
      //   b = 2;
      //   static c = 3;
      //   constructor(a, b, d) {
      //     super(d);
      //     this.a = a;
      //     this.b = b;
      //     console.log(2);
      //   }
      //   say() {
      //     console.log(1);
      //   }
      //   c = () => {
      //     console.log(3);
      //   };
      // }
    </script>
    <script>
      function _typeof(o) {
        '@babel/helpers - typeof';
        return (
          (_typeof =
            'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
              ? function (o) {
                  return typeof o;
                }
              : function (o) {
                  return o &&
                    'function' == typeof Symbol &&
                    o.constructor === Symbol &&
                    o !== Symbol.prototype
                    ? 'symbol'
                    : typeof o;
                }),
          _typeof(o)
        );
      }
      function _callSuper(t, o, e) {
        return (
          (o = _getPrototypeOf(o)),
          _possibleConstructorReturn(
            t,
            _isNativeReflectConstruct()
              ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor)
              : o.apply(t, e)
          )
        );
      }
      function _possibleConstructorReturn(t, e) {
        if (e && ('object' == _typeof(e) || 'function' == typeof e)) return e;
        if (void 0 !== e)
          throw new TypeError('Derived constructors may only return object or undefined');
        return _assertThisInitialized(t);
      }
      function _assertThisInitialized(e) {
        if (void 0 === e)
          throw new ReferenceError(
            "this hasn't been initialised - super() hasn't been called"
          );
        return e;
      }
      function _isNativeReflectConstruct() {
        try {
          var t = !Boolean.prototype.valueOf.call(
            Reflect.construct(Boolean, [], function () {})
          );
        } catch (t) {}
        return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {
          return !!t;
        })();
      }
      function _getPrototypeOf(t) {
        return (
          (_getPrototypeOf = Object.setPrototypeOf
            ? Object.getPrototypeOf.bind()
            : function (t) {
                return t.__proto__ || Object.getPrototypeOf(t);
              }),
          _getPrototypeOf(t)
        );
      }
      function _inherits(t, e) {
        if ('function' != typeof e && null !== e)
          throw new TypeError('Super expression must either be null or a function');
        (t.prototype = Object.create(e && e.prototype, {
          constructor: { value: t, writable: !0, configurable: !0 },
        })),
          Object.defineProperty(t, 'prototype', { writable: !1 }),
          e && _setPrototypeOf(t, e);
      }
      function _setPrototypeOf(t, e) {
        return (
          (_setPrototypeOf = Object.setPrototypeOf
            ? Object.setPrototypeOf.bind()
            : function (t, e) {
                return (t.__proto__ = e), t;
              }),
          _setPrototypeOf(t, e)
        );
      }
      function _defineProperty(e, r, t) {
        return (
          (r = _toPropertyKey(r)) in e
            ? Object.defineProperty(e, r, {
                value: t,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[r] = t),
          e
        );
      }
      function _defineProperties(e, r) {
        for (var t = 0; t < r.length; t++) {
          var o = r[t];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            'value' in o && (o.writable = !0),
            Object.defineProperty(e, _toPropertyKey(o.key), o);
        }
      }
      function _createClass(e, r, t) {
        return (
          r && _defineProperties(e.prototype, r),
          t && _defineProperties(e, t),
          Object.defineProperty(e, 'prototype', { writable: !1 }),
          e
        );
      }
      function _toPropertyKey(t) {
        var i = _toPrimitive(t, 'string');
        return 'symbol' == _typeof(i) ? i : i + '';
      }
      function _toPrimitive(t, r) {
        if ('object' != _typeof(t) || !t) return t;
        var e = t[Symbol.toPrimitive];
        if (void 0 !== e) {
          var i = e.call(t, r || 'default');
          if ('object' != _typeof(i)) return i;
          throw new TypeError('@@toPrimitive must return a primitive value.');
        }
        return ('string' === r ? String : Number)(t);
      }
      function _classCallCheck(a, n) {
        if (!(a instanceof n)) throw new TypeError('Cannot call a class as a function');
      }
      var B = /*#__PURE__*/ _createClass(function B(d) {
        _classCallCheck(this, B);
        this.d = d;
      });
      var A = /*#__PURE__*/ (function (_B) {
        function A(a, b, d) {
          var _this;
          _classCallCheck(this, A);
          _this = _callSuper(this, A, [d]);
          _defineProperty(_this, 'a', 1);
          _defineProperty(_this, 'b', 2);
          _defineProperty(_this, 'c', function () {
            console.log(3);
          });
          _this.a = a;
          _this.b = b;
          console.log(2);
          return _this;
        }
        _inherits(A, _B);
        return _createClass(A, [
          {
            key: 'say',
            value: function say() {
              console.log(1);
            },
          },
        ]);
      })(B);
      _defineProperty(A, 'c', 3);
      new A(444, 444);
      console.log(A);
    </script>

    <script>
      // 不写 super(d);
      // class B {
      //   constructor(d) {
      //     this.d = d;
      //   }
      // }
      // class A extends B {
      //   a = 1;
      //   b = 2;
      //   static c = 3;
      //   constructor(a, b, d) {
      //     this.a = a;
      //     this.b = b;
      //     console.log(2);
      //   }
      //   say() {
      //     console.log(1);
      //   }
      //   c = () => {
      //     console.log(3);
      //   };
      // }
    </script>
    <script>
      function _typeof(o) {
        '@babel/helpers - typeof';
        return (
          (_typeof =
            'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
              ? function (o) {
                  return typeof o;
                }
              : function (o) {
                  return o &&
                    'function' == typeof Symbol &&
                    o.constructor === Symbol &&
                    o !== Symbol.prototype
                    ? 'symbol'
                    : typeof o;
                }),
          _typeof(o)
        );
      }
      function _assertThisInitialized(e) {
        if (void 0 === e)
          throw new ReferenceError(
            "this hasn't been initialised - super() hasn't been called"
          );
        return e;
      }
      function _inherits(t, e) {
        if ('function' != typeof e && null !== e)
          throw new TypeError('Super expression must either be null or a function');
        (t.prototype = Object.create(e && e.prototype, {
          constructor: { value: t, writable: !0, configurable: !0 },
        })),
          Object.defineProperty(t, 'prototype', { writable: !1 }),
          e && _setPrototypeOf(t, e);
      }
      function _setPrototypeOf(t, e) {
        return (
          (_setPrototypeOf = Object.setPrototypeOf
            ? Object.setPrototypeOf.bind()
            : function (t, e) {
                return (t.__proto__ = e), t;
              }),
          _setPrototypeOf(t, e)
        );
      }
      function _defineProperty(e, r, t) {
        return (
          (r = _toPropertyKey(r)) in e
            ? Object.defineProperty(e, r, {
                value: t,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[r] = t),
          e
        );
      }
      function _defineProperties(e, r) {
        for (var t = 0; t < r.length; t++) {
          var o = r[t];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            'value' in o && (o.writable = !0),
            Object.defineProperty(e, _toPropertyKey(o.key), o);
        }
      }
      function _createClass(e, r, t) {
        return (
          r && _defineProperties(e.prototype, r),
          t && _defineProperties(e, t),
          Object.defineProperty(e, 'prototype', { writable: !1 }),
          e
        );
      }
      function _toPropertyKey(t) {
        var i = _toPrimitive(t, 'string');
        return 'symbol' == _typeof(i) ? i : i + '';
      }
      function _toPrimitive(t, r) {
        if ('object' != _typeof(t) || !t) return t;
        var e = t[Symbol.toPrimitive];
        if (void 0 !== e) {
          var i = e.call(t, r || 'default');
          if ('object' != _typeof(i)) return i;
          throw new TypeError('@@toPrimitive must return a primitive value.');
        }
        return ('string' === r ? String : Number)(t);
      }
      function _classCallCheck(a, n) {
        if (!(a instanceof n)) throw new TypeError('Cannot call a class as a function');
      }
      var B = /*#__PURE__*/ _createClass(function B(d) {
        _classCallCheck(this, B);
        this.d = d;
      });
      var A = /*#__PURE__*/ (function (_B) {
        function A(a, b, d) {
          var _this;
          _classCallCheck(this, A);
          _this.a = a;
          _this.b = b;
          console.log(2);
          return _assertThisInitialized(_this);
        }
        _inherits(A, _B);
        return _createClass(A, [
          {
            key: 'say',
            value: function say() {
              console.log(1);
            },
          },
        ]);
      })(B);
      _defineProperty(A, 'c', 3);
    </script>
  </body>
</html>
